先说结论:
一定要用fread 'rb' 二进制的形式读取!
fid=fopen(filename,'rb');
因为要做gnuradio,然后TS流的包比较稳定,都是188bytes,固首先研究单TS流的传输,这个时候找了一个github上的ts流文件http://www.w6rz.net/overflowqpsk_276_45.ts 这个文件大概200M左右,然后读取,首先用fileread进行读取, 检验一下是不是对的,因为同步字节为 0x47 = 71 对应ASCII里面的“G”; 可以发现不对,按道理应该在189、377的位置上发现“G”,但是差了几个,具体原因不知道为啥,因为这个视频是可以播放的,所以他本身肯定没有问题,就只能怀疑读取文件的过程出了问题。 这个时候本来想到单纯读取二进制文件看一看会不会成功, 故使用
fid=fopen('overflowqpsk_276_45.ts','rb');
c = fread(fid);
b = find(c(1:2000)==71)
结果如下图: 因为0x47=71D。可以看到1+188*i的地方都出现了71(其他地方出现了是数据中刚好也是)。故得出结论,使用fread二进制方法读取
|